package controller;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;

import model.FilmEntity;
import model.RezyserEntity;

public class Utils {
	public static List<FilmEntity> prepareFilmList(ResultSet cursor)
	{
		List<FilmEntity> lista = new LinkedList<FilmEntity>();
		try {
			while (cursor.next()) {
				String rok_str = cursor.getString("rok");
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				java.util.Date date;
				date = (sdf.parse(rok_str));

				FilmEntity f = new FilmEntity(cursor.getInt("ID"), cursor
						.getString("tytul"), new Date(date.getTime()));
				
				Integer rez = cursor.getInt("rezyser");
				OracleProcedure op = new OracleProcedure(OracleProcedure.SELECT,"Rezyser");
				op.setColumn("id");
				op.make(true,rez);
				ResultSet cursor2 = op.getCursor();
				cursor2.next();
				f.setRezyserBean(getSingleRezyser(cursor2));
				lista.add(f);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lista;
	}
	
	public static List<RezyserEntity> prepareMinimalRezyserList(ResultSet cursor)
	{
		List<RezyserEntity> lista = new LinkedList<RezyserEntity>();
		
		try {
			while (cursor.next())
			{
				lista.add(new RezyserEntity(cursor.getInt("ID"),
						cursor.getString("imie"),
						cursor.getString("nazwisko")));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return lista;
	}
	
	public static List<RezyserEntity> prepareFullRezyserList(ResultSet cursor)
	{
		List<RezyserEntity> lista = new LinkedList<RezyserEntity>();
		
		try {
			while (cursor.next())
			{
				RezyserEntity rez = new RezyserEntity(cursor.getInt("ID"),
						cursor.getString("imie"),
						cursor.getString("nazwisko"));
				List<FilmEntity> filmy = new LinkedList<FilmEntity>();
				OracleProcedure op = new OracleProcedure(OracleProcedure.SELECT, "Film");
				op.setColumn("rezyser");
				op.make(true, rez.getId());
				ResultSet cursor2 = op.getCursor();
				while (cursor2.next())
				{
					String t = cursor2.getString("tytul");
					filmy.add(new FilmEntity(t,null));
				}
				rez.setFilms(filmy);
				lista.add(rez);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return lista;
	}
	
	public static FilmEntity getSingleFilm(ResultSet cursor)
	{
		FilmEntity f = null;
		try {
			String rok_str = cursor.getString("rok");
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			java.util.Date date;

			date = (sdf.parse(rok_str));
			f = new FilmEntity(cursor.getInt("ID"), 
					cursor.getString("tytul"),
					new Date(date.getTime()));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return f;
	}
	
	public static RezyserEntity getSingleRezyser(ResultSet cursor)
	{
		RezyserEntity rez = null;
		try {
			rez = new RezyserEntity(cursor.getInt("ID"),cursor.getString("imie"),cursor.getString("nazwisko"));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rez;
	}
}
